package com.ysx.teacher.day20210906;
public class Ch03 {

    public static void main(String[] args) {

        int number=-5430345;


        //3 判断这个数是否是1个回文数?
        boolean rs = checkPalindromeNumber(number);
        System.out.println(rs);

    }

    /**
     * 判断这个数字是否是1个回文数
     * @param number  数字
     * @return
     */
    public static boolean checkPalindromeNumber(int number){
        // 入参=用户输入的参数 入参检测  must规范：必须要这么做
        if(number<0){
            return false;
        }

        boolean rs=true;

        // 1 拿到这个数的长度
        int len = getCounter(number);

        for(int position=1;position<=len/2;position++){

            // 2 得到第index位的数
            int first =getNumberByPosition(number,position);
            int second =getNumberByPosition(number,len+1-position);
            if(first!=second){
                return false;
            }
        }
        return rs;

    }

    /**
     * 求这个数的第几位是个什么数
     * @param number  用户传过来的那个数
     * @param position  第几位 注意  最左边的那个数是第1位
     * @return 响应位置上的数字
     */
    public static int getNumberByPosition(int number,int position){

        // 1 入参检测
        int len= getCounter(number);
        if(number<0 || position<0 || position>len){
            // 说明用户输入有误
            return -1;
        }

        // 2 提现方法调用的价值
        for(int index=position;index<=len-1;index++){
            number=number/10;
            if(number<=10){
                break;
            }
        }
        int rs= number%10;
        return rs;


    }

    /**
     * 求这个整数有几位数 1234 0
     * @param number  正整数
     * @return 如果返回0 表示用户的输入有误
     */
    public static int getCounter(int number){
        // 1 考虑参数的异常的情况
        if(number<0){
            // 返回0代表错误的意思
            return 0;
        }

        //2 执行正常的逻辑
        int counter=1;
        while(true){
            if(number>=10){
                number = number/10;
                counter++;
            }else{
                break;
            }
        }
        return counter;
    }
}
